home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / language / euphor12 / sieve.bas < prev    next >
BASIC Source File  |  1994-06-05  |  948b  |  53 lines

  1. ' PRIME SIEVE BENCHMARK
  2.  
  3. DEFINT A-Z  'only 16-bit integers, but runs faster than DEFLNG A-Z
  4.  
  5. DECLARE FUNCTION sieve()
  6.  
  7. 'Constants
  8. CONST BATCH = 5
  9. CONST BENCHTIME = 15
  10.  
  11. CONST TRUE = -1
  12. CONST FALSE = NOT TRUE
  13. CONST SIZE = 8191
  14.  
  15. 'Global Variables
  16. DIM SHARED flags(SIZE)
  17.  
  18. PRINT "prime sieve benchmark ..."
  19.  
  20. cycles& = 0
  21. t# = TIMER
  22. WHILE TIMER < t# + BENCHTIME
  23.     FOR b = 1 TO BATCH
  24.         IF sieve <> 1899 THEN
  25.         PRINT "whoops"
  26.     END IF
  27.     NEXT b
  28.     cycles& = cycles& + BATCH
  29. WEND
  30. t# = TIMER - t#
  31. PRINT USING "###.## sieves per second"; cycles& / t#
  32.  
  33. SYSTEM
  34.  
  35. FUNCTION sieve
  36.     count = 0
  37.     FOR f = 1 TO SIZE
  38.         flags(f) = TRUE
  39.     NEXT f
  40.     FOR i = 1 TO SIZE
  41.         IF flags(i) THEN
  42.             prime = i + i + 1
  43.             'PRINT prime;
  44.         FOR k = i + prime TO SIZE STEP prime
  45.         flags(k) = FALSE
  46.         NEXT k
  47.         count = count + 1
  48.     END IF
  49.     NEXT i
  50.     sieve = count
  51. END FUNCTION
  52.  
  53.